package com.wn.confirm;

import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageProperties;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

/**
 * @author yellow Docter
 * @date 2023 -07-26
 * @desc 回退机制 单独的放到了   ConfirmCallBack 类中
 */
//@Component
public class ProductConfirm {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Autowired
    private ConfirmCallBack confirmCallBack;

    //在  ProductConfirm 进行初始化的时候 设置 确认回退机制
    @PostConstruct   // 当前的对象 进行初始化的时候、执行的方法
    public void init(){
        rabbitTemplate.setConfirmCallback(confirmCallBack);
        // true 表示消息未到达队列时会把消息返回给生产者；false会直接丢弃消息
        rabbitTemplate.setMandatory(true);
        rabbitTemplate.setReturnCallback(confirmCallBack);
    }


    public void send(String msg){

        //回退机制 单独的放到了   ConfirmCallBack 类中
        //消息发送
        rabbitTemplate.convertAndSend(
                "confirm-exchange",
                "confirm.msg",
                msg
        );

    }
}
